#!/bin/bash

/usr/bin/killall cat 2>&1 > /dev/null
/usr/bin/killall -9 minicom 2>&1 > /dev/null
/bin/setserial /dev/ttyS0 spd_normal
/usr/bin/minicom -o 2>&1 > /dev/null &
/bin/sleep 5
/usr/bin/killall -9 minicom 2>&1 > /dev/null
/usr/bin/killall -9 tail 2>&1 > /dev/null

cat /dev/ttyS0 |
while read bilhete
 do
 codigo=`echo $bilhete | cut -c2-3`
 case $codigo in
  71) wdata=`date "+%d/%m/%Y as %H:%M"`
  origem=`echo $bilhete | cut -c4-13 | sed 's/^0//' | sed 's/^00000//'`;
  ramal=`echo $bilhete | cut -c22-25`;
  ramalfinal=`echo $bilhete | cut -c27-30`;
  datahora=`date +%Y%m%d%H%M%S`
  bilhete2=`echo $bilhete | cut -c2-30` # corta a gordura que a central manda junto com o bilhete
  # Procedimento de gravação das infos dos ramais. Grava as ultimas 300 ligações de cada ramal
  if test $ramal = $ramalfinal
  then
  echo $datahora$bilhete2 >> /root/monitor/temp/$ramal.in
  tail -n300  /root/monitor/temp/$ramal.in >  /root/monitor/temporario
  mv -f /root/monitor/temporario  /root/monitor/temp/$ramal.in
  else
  echo $datahora$bilhete2 >>  /root/monitor/temp/$ramal.in
  echo $datahora$bilhete2 >>  /root/monitor/temp/$ramalfinal.in
  tail -n300  /root/monitor/temp/$ramal.in >  /root/monitor/temporario
  tail -n300  /root/monitor/temp/$ramalfinal.in >  /root/monitor/temporariofinal
  mv -f /root/monitor/temporario  /root/monitor/temp/$ramal.in
  mv -f /root/monitor/temporariofinal  /root/monitor/temp/$ramalfinal.in
  fi
  
  cat /root/monitor/ramais | grep $ramal |
  while read listaderamais
  do
          nomeramal=`cat /root/monitor/listatel | grep ^$origem | cut -f2 -d:`
		  if test -n "$nomeramal"
                  then
                          nomeramal=`echo \($nomeramal\)`
              	  else
                          nomeramal="(Desconhecido)"
                  fi
   jabberdoramal=`echo $listaderamais | cut -f3 -d:`;
   donodoramal=`echo $listaderamais | cut -f2 -d:`;
   donodoramal=`echo \($donodoramal\)`

   # Testa se o ramal que esta recebendo a ligacao e o mesmo que foi chamado

   if test $ramal = $ramalfinal
   then
     echo "Ligacao de $origem $nomeramal para $ramal $donodoramal em $wdata"| /home/binabot/sendmessage.pl $jabberdoramal

   # Se o ramar que recebeu a ligação não for o mesmo que foi chamado aciona mensagem de encaminhamento para os dois ramais
   # Procedimento para enviar a mensagem para o ramal que está recebendo o siga-me

   else
     nomeramalfinal=`cat /root/monitor/listatel | grep ^$ramalfinal | cut -f2 -d:`
				if test -n "nomeramalfinal"
                                then
                                        nomeramalfinal=`echo \($nomeramalfinal\)`;
                                else
                                        nomeramalfinal="(Desconhecido)"
                                fi

                                echo "Ligacao de $origem $nomeramal para $ramal $donodoramal encaminhada de $ramalfinal $nomeramalfinal em $wdata"|/home/binabot/sendmessage.pl $jabberdoramal

    # Procedimento para enviar a mensagem também para o ramal que está com o siga-me ativado

    cat /root/monitor/ramais | grep $ramalfinal |
    while read listaderamaisfinais
    do
    jabberdoramalfinal=`echo $listaderamaisfinais | cut -f3 -d:`;
                                echo "Ligacao de $origem $nomeramal para $ramalfinal $nomeramalfinal encaminhada para $ramal $donodoramal em $wdata"|/home/binabot/sendmessage.pl $jabberdoramalfinal
    done

   fi

  done
  ;;
  *)
  ;;
 esac
 
done
